package controllers;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.nio.charset.Charset;

import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.select.Elements;

@SuppressWarnings("serial")
public class CheckLinkGetContentServlet extends HttpServlet {
	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws IOException {
		response.setCharacterEncoding("utf-8");
		String sitemap = request.getParameter("sitemap");
		String regtitle = request.getParameter("regtitle");
		String regcontent = request.getParameter("regcontent");
		String regremove = request.getParameter("regremove");
		
		sitemap = Utils.fomatSitemap(sitemap);
		
		URL url = new URL(sitemap);
		String charset = "UTF-8";
		HttpURLConnection connection = (HttpURLConnection) url.openConnection();
	    connection.setInstanceFollowRedirects(true);
	    connection.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.21) Gecko/20110830 AlexaToolbar/alxf-2.14 AlexaToolbar/pXVUnvuf-1.2 Firefox/3.6.21");
		connection.setRequestProperty("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");
		connection.setRequestProperty("Accept-Language", "en-us,en;q=0.5");
		connection.setRequestProperty("Accept-Charset", "	ISO-8859-1,utf-8;q=0.7,*;q=0.7");
		connection.setRequestProperty("Connection", "keep-alive");
		connection.setRequestProperty("Keep-Alive", "115");
		connection.setRequestProperty("Cookie", "PREF=ID=987bb7a56b1cc7bc:U=691fa246d56f502e:FF=0:TM=1314876638:LM=1314876681:S=yBXzqp_WQq9ykX-j; NID=50=nfNXg7ymSSsfdzMnkEuo7t1GCgIEwcK5xmpFhu1mQWwvNI5nFHLZpRsy_1XnaoKrdj9hnz7za9-M2OIO99phfFSTmXln-xCvqzJaRWHsN0EQKgpmkvgUDTWPVF4I4c9L; SID=DQAAALcAAADhqr-J8Ls3CKhmbRjwTMMP1DjmIvR8qBFxv99saTaFFgoRsVf18W4p_BTocYoxYNMvsvh9sfjMj7KqLyd_s9Y0lwYY_Rrljd7t5IpKBTWWnsv9VSJ_qelH943zV8YIT3uuIdJbHhFlCnVEu_YealZoldWjf4VirYR0PIrr0i4_JU2JCHRmpyW0ACt3KcyLkukJlGDyT5yC5js3CBSTAhnWSylBpMWPWyWJzqXe2BQFcdfuU_qo00pAR-uEcMQ437M; HSID=A9Z-j3CKhzDEykAES");
		connection.setRequestProperty("Cache-Control", "max-age=0");
	    BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream(), Charset.forName(charset)));
		String content = "";
		char[] buf = new char[102102];
		int numRead=0;
        while((numRead=reader.read(buf)) != -1){
            String readData = String.valueOf(buf, 0, numRead);
            content += readData;
            buf = new char[102102];
        }
        reader.close();
		Document doc = Jsoup.parse(content);
		
		int index = doc.select("meta").toString().toLowerCase()
				.indexOf("charset=");
		if (index != -1) {
			charset = doc.select("meta").toString().substring(index + 8)
					.replaceAll("[^\\'\\\"0-9a-zA-Z\\-\\_]+[\\w\\W]+", "")
					.replaceAll("[\\'\\\"]+", "");
		}
		connection = (HttpURLConnection) url.openConnection();
	    connection.setInstanceFollowRedirects(true);
	    connection.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.21) Gecko/20110830 AlexaToolbar/alxf-2.14 AlexaToolbar/pXVUnvuf-1.2 Firefox/3.6.21");
		connection.setRequestProperty("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");
		connection.setRequestProperty("Accept-Language", "en-us,en;q=0.5");
		connection.setRequestProperty("Accept-Charset", "	ISO-8859-1,utf-8;q=0.7,*;q=0.7");
		connection.setRequestProperty("Connection", "keep-alive");
		connection.setRequestProperty("Keep-Alive", "115");
		connection.setRequestProperty("Cookie", "PREF=ID=987bb7a56b1cc7bc:U=691fa246d56f502e:FF=0:TM=1314876638:LM=1314876681:S=yBXzqp_WQq9ykX-j; NID=50=nfNXg7ymSSsfdzMnkEuo7t1GCgIEwcK5xmpFhu1mQWwvNI5nFHLZpRsy_1XnaoKrdj9hnz7za9-M2OIO99phfFSTmXln-xCvqzJaRWHsN0EQKgpmkvgUDTWPVF4I4c9L; SID=DQAAALcAAADhqr-J8Ls3CKhmbRjwTMMP1DjmIvR8qBFxv99saTaFFgoRsVf18W4p_BTocYoxYNMvsvh9sfjMj7KqLyd_s9Y0lwYY_Rrljd7t5IpKBTWWnsv9VSJ_qelH943zV8YIT3uuIdJbHhFlCnVEu_YealZoldWjf4VirYR0PIrr0i4_JU2JCHRmpyW0ACt3KcyLkukJlGDyT5yC5js3CBSTAhnWSylBpMWPWyWJzqXe2BQFcdfuU_qo00pAR-uEcMQ437M; HSID=A9Z-j3CKhzDEykAES");
		connection.setRequestProperty("Cache-Control", "max-age=0");
	    reader = new BufferedReader(new InputStreamReader(connection.getInputStream(), Charset.forName(charset)));

		content = "";
		buf = new char[102102];
		numRead=0;
        while((numRead=reader.read(buf)) != -1){
            String readData = String.valueOf(buf, 0, numRead);
            content += readData;
            buf = new char[102102];
        }
        reader.close();
		doc = Jsoup.parse(content);
		String ti = "";
		try {
			ti = doc.select(regtitle).text();
		} catch (Exception e) {
			// TODO: handle exception
		}
		
		doc = Jsoup.parse(doc.select(regcontent).html());
		String[] remove = regremove.split(" ");
		String strContent="";
		doc.select("script").remove();
		if (remove.length > 0) {
			for (int i = 0; i < remove.length; i++) {
				try {
					if ((remove[i] != null) && (!remove[i].equals("")))
					{
						String[] reg = remove[i].split("\\|"); 
						
						if(reg.length >=2)
						{
							if(reg[1].equals("last"))
							{
								doc.select(reg[0].replaceAll(">", " ")).last().remove();
							} else {
								doc.select(reg[0].replaceAll(">", " ")).first().remove();
							}
						} else {
							doc.select(remove[i].replaceAll(">", " ")).remove();
						}
					}
				} catch (Exception localException1) {
				}
			}
		}
		
		doc.select("a").attr("rel","nofollow");
		strContent = doc.html();

		request.setAttribute("title", ti);
		request.setAttribute("content", Utils.cleanContent(strContent));
		
		try {
			request.getRequestDispatcher("/check_link_get_content.jsp").forward(request, response);
		} catch (Exception e) {
			// TODO: handle exception
		}
	}
}
